Compute Optimizer から アイドル状態のEBSボリュームを洗い出す
以下更新から Compute Optimizer にてアイドルリソース検知がサポートされています。
サポートされているリソースは以下のとおりです。
- EC2 インスタンス
- EC2 Auto Scaling グループ
- EBS ボリューム
- Fargate で実行されている ECS サービス
- RDS インスタンス
今回は EBSボリューム に絞って、 内容を深堀りしてみます。
また、これまで Trusted Advisor でも EBSボリュームの非アクティブ検知はできていたので、 それとの違いも調べてみます。
前提
Compute Optimizer の有効化については割愛します。 代わりに以下公式ドキュメントを参照ください。
とりあえずマネコンを見てみる
[Recommendations > Idle resources] にてアイドルリソースの一覧を確認できます。 EBSに絞るには リソースタイプ = EBS volume
で絞ります。
各推奨事項の結果は アイドル(Idle)
と Unattached
の2種類です。
アイドル(Idle) 詳細のサンプル
Idle ステータスのEBSボリューム画面は以下のような表示です。 "This EBS volume is idle." コールアウトが記載されています。
This EBS volume is idle.
- Verify whether you need this volume. If you don't need it, we recommend that you create a snapshot of the volume and consider deleting it.
- このボリュームが必要かどうかを確認します。必要ない場合は、ボリュームのスナップショットを作成し、削除を検討することをお勧めします。 (DeepL訳)
[Idle criteria]
- If the read/write operation is less than 1 IOPS per day over the 14-day lookback period.
- 14日間のルックバック期間において、読み書き操作が1日あたり1IOPS未満の場合。 (DeepL訳)
Unattached 詳細のサンプル
Unattached ステータスのEBSボリューム画面は以下のような表示です。 "This EBS volume is unattached." コールアウトが記載されています。
This EBS volume is unattached.
- Verify whether you need this volume. If you don't need it, we recommend that you create a snapshot of the volume and consider deleting it.
- このボリュームが必要かどうかを確認します。必要ない場合は、ボリュームのスナップショットを作成し、削除を検討することをお勧めします。 (DeepL訳)
[Idle criteria]
- If the volume isn't attached to any EC2 instance over the 32-day lookback period.
- 32日間のルックバック期間中、ボリュームがどのEC2インスタンスにもアタッチされていない場合。 (DeepL訳)
AWS CLI から棚卸ししてみる
AWS CLI からの棚卸しを試してみます。 aws compute-optimizer get-idle-recommendations コマンドを使用します。
以下シンプルな実行例です。
aws compute-optimizer get-idle-recommendations \
--region ap-northeast-1 --output yaml \
--filters name=ResourceType,values=EBSVolume
errors: []
idleRecommendations:
- accountId: '111111111111'
finding: Unattached
findingDescription: This EBS volume is unattached because isn’t attached to any
EC2 instance.
lastRefreshTimestamp: '2024-11-22T03:00:00+09:00'
lookBackPeriodInDays: 32.0
resourceArn: arn:aws:ec2:ap-northeast-1:111111111111:volume/vol-01afexample
resourceId: vol-01afexample
resourceType: EBSVolume
savingsOpportunity:
estimatedMonthlySavings:
currency: USD
value: 0.768
savingsOpportunityPercentage: 100.0
savingsOpportunityAfterDiscounts:
estimatedMonthlySavings:
currency: USD
value: 0.6259
savingsOpportunityPercentage: 100.0
tags: []
utilizationMetrics:
- name: VolumeReadOpsPerSecond
statistic: Maximum
value: 0.0
- name: VolumeWriteOpsPerSecond
statistic: Maximum
value: 0.0
- accountId: '111111111111'
finding: Unattached
... (略)
※ Organizations 連携を有効化している環境の場合は、 --account-ids
パラメータを指定して、特定メンバーアカウントにおける推奨事項を確認できます。
項目を絞って、テーブル化してみます。
query='idleRecommendations[].{
AccountID:accountId,
ResourceID:resourceId,
ResourceNameTag:tags[?key==`Name`]|[0].value,
Finding:finding,
EstimatedMonthlySavings:savingsOpportunity.estimatedMonthlySavings.value
}'
aws compute-optimizer get-idle-recommendations \
--region ap-northeast-1 --output table \
--filters name=ResourceType,values=EBSVolume \
--query "${query}"
-----------------------------------------------------------------------------------------------
| GetIdleRecommendations |
+--------------+---------------------------+-------------+------------------+-----------------+
| AccountID | EstimatedMonthlySavings | Finding | ResourceID | ResourceNameTag |
+--------------+---------------------------+-------------+------------------+-----------------+
| 111111111111| 24.0 | Idle | vol-0019example | HOGE-03 |
| 111111111111| 11.52 | Idle | vol-00c5example | HOGE-04 |
| 111111111111| 12.0 | Idle | vol-0178example | HOGE-02 |
| 111111111111| 0.48 | Idle | vol-0200example | FUGA |
| 111111111111| 4.8 | Unattached | vol-034eexample | None |
| 111111111111| 19.2 | Unattached | vol-0651example | None |
| 111111111111| 6.0 | Idle | vol-06f5example | PIYO-02 |
+--------------+---------------------------+-------------+------------------+-----------------+
[補足] Trusted Advisor との違いは?
Trusted Advisor にも [利用頻度の低い Amazon EBS ボリューム] といった似たようなチェック項目があります。
アラート基準の違いをまとめると以下のようになります。
Trusted Advisor | Compute Optimizer |
---|---|
7日間アタッチされていない 7日間のIOPSが 1日あたり 1IOPS未満 |
32日間アタッチされていない 14日間のIOPSが 1日あたり 1IOPS未満 |
アイドル判断のIOPS基準は同じですが、 見ている期間が違いますね。 Compute Optimizer のほうが、より広い期間を見てくれています。
誤検知を避けたい場合は Compute Optimizer のほうが良さそうです。
おわりに
以上 Compute Optimizer 新機能のEBS部分を深堀りしてみました。
今まで Trusted Advisor の機能を使って「アイドル状態のEBS」を検知している方がいらっしゃれば、 これを機に Compute Optimizer への活用に乗り換えても良いかもしれません。
参考になれば幸いです。
参考